#ifndef INCLUDED_CATMULLROM_CURVE_EVALUATOR_H
#define INCLUDED_CATMULLROM_CURVE_EVALUATOR_H

#pragma warning(disable : 4786)  

#include "CurveEvaluator.h"

#include "vec.h"
#include "mat.h"

//using namespace std;

// const double CATMULL_ROM_TAU = 0.5; // Tension
const double CATMULLROM_PARAMETER_SAMPLE = 0.005;

class CatmullRomCurveEvaluator : public CurveEvaluator
{
public:
	void evaluateCurve(const std::vector<Point>& ptvCtrlPts, 
		std::vector<Point>& ptvEvaluatedCurvePts, 
		const float& fAniLength, 
		const bool& bWrap) const;
private:
	vector<Point> CatmullRomCurveEvaluator::getSingleSpline(Point b0, Point b1, Point b2, Point b3) const;
};

#endif